// generate_test_audio.js
// 生成一个简单的测试音频文件（静音WAV文件）

const fs = require('fs');

// WAV文件头部结构
function createWavHeader(sampleRate, bitsPerSample, channels, dataLength) {
  const buffer = Buffer.alloc(44);
  
  // RIFF标识
  buffer.write('RIFF', 0);
  
  // 文件长度
  buffer.writeUInt32LE(dataLength + 36, 4);
  
  // WAVE标识
  buffer.write('WAVE', 8);
  
  // fmt子块
  buffer.write('fmt ', 12);
  buffer.writeUInt32LE(16, 16); // fmt子块长度
  buffer.writeUInt16LE(1, 20); // 音频格式（PCM = 1）
  buffer.writeUInt16LE(channels, 22); // 通道数
  buffer.writeUInt32LE(sampleRate, 24); // 采样率
  buffer.writeUInt32LE(sampleRate * channels * bitsPerSample / 8, 28); // 字节率
  buffer.writeUInt16LE(channels * bitsPerSample / 8, 32); // 块对齐
  buffer.writeUInt16LE(bitsPerSample, 34); // 每个样本的位数
  
  // data子块
  buffer.write('data', 36);
  buffer.writeUInt32LE(dataLength, 40); // 数据长度
  
  return buffer;
}

// 生成静音WAV文件
function generateSilentWav(filePath, durationSeconds = 3) {
  // 音频参数
  const sampleRate = 16000; // 采样率
  const bitsPerSample = 16; // 位深度
  const channels = 1; // 单声道
  
  // 计算数据长度
  const bytesPerSample = bitsPerSample / 8;
  const dataLength = Math.floor(sampleRate * durationSeconds * channels * bytesPerSample);
  
  // 创建WAV头部
  const header = createWavHeader(sampleRate, bitsPerSample, channels, dataLength);
  
  // 创建数据部分（静音 = 全0）
  const data = Buffer.alloc(dataLength);
  
  // 写入文件
  const fileStream = fs.createWriteStream(filePath);
  fileStream.write(header);
  fileStream.write(data);
  fileStream.end();
  
  console.log(`已生成${durationSeconds}秒的静音WAV文件: ${filePath}`);
}

// 生成测试音频文件
generateSilentWav('./test_audio.wav', 3); 